# Lua支持goto语法, 但是有一定的局限性.

 

例如

1.不能在block外面跳入block(因为block中的lable不可见), 

2.不能跳出或者跳入一个函数. 

 3.不能跳入本地变量的作用域.

```


i = 0
::s1:: do
print(i)
i = i+1
end
if i>3 then
os.exit()
end
goto s1
```

goto在Lua中还可用于模拟continue , redo这种用法. 因为Lua目前没有continue和redo的用法.

```
i = 0
while i<10 do
::redo::
i = i+1
if i%2 == 1 then 
goto continue 
else 
print(i)
goto redo
end
::continue::
end
```

不能跳入一个本地变量的作用域, 例如 : 

```
do 
goto notok1
local i = 1
print(i)
::notok1::  -- 本地变量的作用域内, 所以无法跳转
i = i+ 1
::ok::  -- 本地变量的作用域结束, 所以可以跳转.
end
```

